# prompt.py
import sys
from classes import Config
def load_prompt(config:Config) -> str:
    
    prompt:str=''
    """
    加载提示词，优先级：命令行参数 > 文件 > stdin。
    :param args: 从命令行解析的参数字典。
    :return: 提示词字符串。
    """
    prompt=load_prompt_from_cmd(config)+load_prompt_from_file(config.prompt_file)+load_prompt_from_stdin()
    
 
    return prompt

def load_prompt_from_file(file_path: str) -> str:
    if file_path:
        """
        从文件中加载提示词。
        :param file_path: 文件路径。
        :return: 提示词字符串。
        """
        try:
            with open(file_path, 'r') as f:
                return f.read()
        except FileNotFoundError:
            print(f"配置文件中的prompt_file文件: {file_path} 不存在")
            return ''
    else:
        return ''
        
def load_prompt_from_stdin() -> str:
    """
    从标准输入加载提示词。
    :return: 提示词字符串。
    """
    return sys.stdin.read() if not sys.stdin.isatty() else ''

def load_prompt_from_cmd(config) -> str:
    """
    从命令行参数中加载提示词。
    :return: 提示词字符串。
    
    """
    return config.prompt if hasattr(config,"prompt") else ''
    
    

if __name__ == '__main__':
    config=Config(prompt_file="hello.txt")
    print(load_prompt(config))